package main

import (
	"fmt"
	"sort"
)

func main() {
	/*
		map 的遍历：
			使用：for range (因为 map 是无序的，不能通过下标进行访问)

				数组，切片：index, value
				map: key, value
	*/
	map1 := make(map[int]string)
	map1[1] = "红孩儿"
	map1[2] = "喜羊羊"
	map1[3] = "美羊羊"
	map1[4] = "懒洋洋"
	map1[5] = "灰太狼"
	map1[6] = "红太狼"

	//1.遍历 map1
	for key, value := range map1 {
		fmt.Println(key, value)
	} // 打印出来的 key 是无序的

	fmt.Println("-------------------------")
	//有序打印
	for i := 1; i <= len(map1); i++ { // key 必须是连续的，才能获得准确的遍历结果
		fmt.Println(i, "-->", map1[i])
	}
	/*
		1.获取所有的 key，--> 切片/数组
		2.进行排序
		3.遍历 key，--> map[key]
	*/
	keys := make([]int, 0, len(map1))
	fmt.Println(keys)

	for k, _ := range map1 {
		keys = append(keys, k)
	}
	fmt.Println(keys)

	//自己写排序方法（如：冒泡排序。。），或者所有 sort 包下的排序方法
	sort.Ints(keys)
	fmt.Println(keys)

	for _, key := range keys {
		fmt.Println(key, map1[key])
	}

	//字符串的排序
	s1 := []string{"Apple", "Windows", "Drange", "abc", "喜羊羊", "acd"}
	fmt.Println(s1)
	sort.Strings(s1)
	fmt.Println(s1)
}
